package plataforma.base.cci;

import nucleo.comuns.util.NucleoMensagens;
import nucleo.global.ContextoSessao;
import nucleo.global.cci.CtrlPrincipal;
import nucleo.global.cci.IGerenciadorContexto;

import org.springframework.context.annotation.Scope;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Messagebox;

import plataforma.base.cih.JanelaSimples;

@Scope(value = "prototype")
public abstract class CtrlBase {

	// /caminho de todas as janelas simples utilizadas no sistema
	public static final String CAMINHO_JANELA_SIMPLES = "/visao/janelaSimples.zul";

	public static JanelaSimples factoryJanelaSimples() {

		return (JanelaSimples) Executions.createComponents(
				CAMINHO_JANELA_SIMPLES, null, null);
	}

	public void confirmaSimNao(String mensagemConfirmacao,
			EventListener listener) {
		try {
			Messagebox.show(mensagemConfirmacao, NucleoMensagens
					.getMensagem(NucleoMensagens.TERMO_CONFIRMACAO),
					Messagebox.YES | Messagebox.NO, Messagebox.QUESTION,
					listener);
		} catch (InterruptedException e) {
			// TODO NANDOLPHO -> LOG NO SERVIDOR
			e.printStackTrace();
		}

	}

	/**
	 * Essa Janela de Aviso aparece e some em poucos segundos
	 * */
	public static void mostrarJanelaStatus(String mensagem) {

		ContextoSessao.getCtrlPrincipal().showStatus(mensagem);

	}
	
/**
 * Essa janela de Aviso fica fixa bloqueando a acao do usuario
 * 
 * */
	public static void mostrarJanelaAvisoComBloqueio(String mensagem) {

		try {
			Messagebox.show(mensagem,
					NucleoMensagens.getMensagem(NucleoMensagens.TERMO_AVISO),
					1, Messagebox.INFORMATION);
		} catch (InterruptedException e) {
			// TODO NANDOLPHO -> LOG NO SERVIDOR
			e.printStackTrace();
		}

	}

	public abstract void configurarComponentes();

}
